"""
《邢不行|Python数字货币量化投资课程》
无需编程基础，助教答疑服务，专属策略网站，一旦加入，永续更新。
课程详细介绍：https://quantclass.cn/crypto/class
邢不行微信: xbx9025
本程序作者: 邢不行

# 课程内容
择时策略实盘需要的配置参数
"""

import ccxt
import warnings
import pandas as pd

warnings.filterwarnings('ignore')

pd.set_option('display.max_rows', 1000)
pd.set_option('expand_frame_repr', False)  # 当列太多时不换行
# 设置命令行输出时的列对齐功能
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)

max_try_amount = 5
max_len = 500  # 设定最多收集多少根K线

leverage = 3
strategy_name = 'signal_simple_turtle'
position = 1 / 4  # 每个交易对分配资金的比例
symbol_config = {
    'BNBUSDT':
        {
            'leverage': leverage,  # 控制实际交易的杠杆倍数，在实际交易中可以自己修改。此处杠杆数，必须小于页面上的最大杠杆数限制
            'strategy_name': strategy_name,  # 使用的策略的名称
            'para': [210, 10],  # 策略参数
            'time_interval': '1d',  # offset
            'position': position,
        },
    'BCHUSDT':
        {
            'leverage': leverage,  # 控制实际交易的杠杆倍数，在实际交易中可以自己修改。此处杠杆数，必须小于页面上的最大杠杆数限制
            'strategy_name': strategy_name,  # 使用的策略的名称
            'para': [250, 120],  # 策略参数
            'time_interval': '1d',  # offset
            'position': position,
        },
    'BTCUSDT':
        {
            'leverage': leverage,  # 控制实际交易的杠杆倍数，在实际交易中可以自己修改。此处杠杆数，必须小于页面上的最大杠杆数限制
            'strategy_name': strategy_name,  # 使用的策略的名称
            'para': [770, 40],  # 策略参数
            'time_interval': '8h',  # offset
            'position': position,
        },
    'ETHUSDT':
        {
            'leverage': leverage,  # 控制实际交易的杠杆倍数，在实际交易中可以自己修改。此处杠杆数，必须小于页面上的最大杠杆数限制
            'strategy_name': strategy_name,  # 使用的策略的名称
            'para': [270, 270],  # 策略参数
            'time_interval': '8h',  # offset
            'position': position,
        },
}

# 订单对照表
binance_order_type = {
    '开多': 'BUY',
    '开空': 'SELL',
    '平多': 'SELL',
    '平空': 'BUY',
    '平空开多': 'BUY',
    '平多开空': 'SELL',
}

# sleep时间配置
short_sleep_time = 1  # 用于和交易所交互时比较紧急的时间sleep，例如获取数据、下单
medium_sleep_time = 2  # 用于和交易所交互时不是很紧急的时间sleep，例如获取持仓
long_sleep_time = 10  # 用于较长的时间sleep

# timeout时间
exchange_timeout = 3000  # 3s

# =====交易所配置
# 如果使用代理 注意替换IP和Port
proxy = {
    "http": 'http://127.0.0.1:7890',
    "https": 'https://127.0.0.1:7890',
}
# 创建交易所
exchange = ccxt.binance({
    # mpharaoh666888账户
    'apiKey': "IWutqYrDM6PNgMDyaJMzq1SvEeZONxJkVIKe59rmEdafZ327GMXUmQDMC9zxO8G9",
    'secret': "NmzBMlndNRyJfsXj8YjnXeuDYDqk1WYZUkDK38U3FOzYih8ZZnTmC5LzsX724Pq5",
    # 子账户2
    # 'apiKey': "9iHVBQpBHaZfleCeBIiqsLkEZl00jGQmU7cG254S0xEo8cqYN89YnQ9cpd4auKyh",
    # 'secret': "i68IYILxXtm8HJGKIjPnf0sQW8qxX5p1nQMEoVI6D807YLto7AhuhpN4DR0x1SE1",
    # 子账户3
    # 'apiKey': "DL7dvyfthCT1cdnJcbWxVGDChw8pu1Y3RlydgnDjXEppxwyWPtvF97tS7ggRNEEV",
    # 'secret': "SW7886Fmi6BTZtpFKaqyB2gSv5ZchzB2OHMrK0ib0vXp0iMQeMrbIQiNkOSYszKd",
    'timeout': 30000,
    'rateLimit': 10,
    'enableRateLimit': False,
    'options': {
        'adjustForTimeDifference': True,
        'recvWindow': 10000,
    },
    # 'proxies': proxy
})

# =====钉钉配置
# test群
webhook = 'daea72c7ee0441bcdef0ed84669c19133b964214290f400cf85e2cbbc225ace6'  # 钉钉机器人的webhook
secret = 'SEC796c837660ff64295b9441fedd00604194fdc7613f0ecd3dce40adb57861b827'  # 钉钉机器人的密钥

# 布林策略群
# webhook = 'da277272fac492b9567c1289fccc1fa8dc27dab3bff3fac2464866cc032d668b'  # 钉钉机器人的webhook
# secret = 'SECc3d2e35e214242a0a2ba676414ef883fff9dd66721485a27c391633e21c7e261'  # 钉钉机器人的密钥

# 海归策略群
# webhook = '90a6016bf2b211738a67d9fc8fec000bee8be59e19f265534df1f8c5e3065030'  # 钉钉机器人的webhook
# secret = 'SECcadd955654f777827a739a057698827bda45d34e5aaf85735a940e1748f0c54b'  # 钉钉机器人的密钥
